﻿using System;

namespace _059_枚举类型的转换
{
    class Program
    {
        public enum BorderSide { Left = 1, Right = 2, Top = 10, Bottom = 11 };
        // 也可以显式地将一个枚举类型转换成另一个
        public enum HorizontalAlignment
        {
            Left = BorderSide.Left,
            Right = BorderSide.Right,
            Center
        }
        static void Main(string[] args)
        {
            // 枚举类型的示例可以和它对应的整型值互相转换：
            int i = (int)BorderSide.Left;
            BorderSide side = (BorderSide)i;
            bool leftorRight = (int)side <= 2;

            HorizontalAlignment h = (HorizontalAlignment)BorderSide.Right;
            // 等价于
            HorizontalAlignment h1 = (HorizontalAlignment)(int)BorderSide.Right;

            // 在枚举表达式中，编译器对数值0进行特别处理，不需要显式转换：
            BorderSide b = 0; // 不用转换
            //BorderSide b1 = 1; // 报错，需要显式转换
            BorderSide b1 = (BorderSide)1;
            /* 对0进行特别管理原因有两个：①第一个枚举成员经常被用作“默认”值；②在合并枚举类型中，0表示不标识类型 */
        }
    }
}